
public class Test {
    public static void main(String[] args) throws Exception {
        Sheep s = new Sheep();
        Sheep s1 = s.clone();
        System.out.println(s1.name);
    }
}

interface Cloneable<T> {
    T clone();
}

// 用原型实例指定创建对象的种类，并且通过拷贝这些原型创建新的对象。
// 原型模式，即Prototype，是指创建新对象的时候，根据现有的一个原型来创建。
class Sheep implements Cloneable<Sheep> {
    String name = "Dolly";

    public Sheep clone() {
        Sheep s = new Sheep();
        s.name = this.name;
        return s;
    }
}